Entidades Federativas Prioritarias

Creacion de Indice Compuesto

Author

Jesus LM

Published

Jun, 2025

Abstract
En este reporte, creamos un ranking de Municipios de acuerdo con diferentes variables.

Configuracion del entorno

La tabla insumo es la que se muestra a continuacion. En ella encontramos los siguientes campos:

  • No.
  • Clave INEGI
  • Entidad Federativa
  • Municipio
  • Estado de Fuerza Municipal DIC 2019
  • Estado de Fuerza Municipal DIC 2024
  • Porcentaje de incremento Estado de fuerza, últimos 5 años
  • Población 2020
  • Estado de Fuerza Municipal MAR 2025
  • Tasa de Policía Municipal por cada mil hab.
  • Salario CONASAMI 2024
  • Salario bruto municipal 2024 Promedio
  • Diferencia
  • Evaluados en Control de Confianza
  • Aprobados en Control de Confianza
  • Aprobados vs. E.F.
  • Elementos con CUP
  • Elementos con CUP vs. E.F.
  • Confianza ENSU 2025 MAR
  • Desempeño ENSU 2025 MAR
Ver codigo
import pandas as pd
import plotly.express as px
Ver codigo
df = pd.read_csv('datasets/variables.csv')
Ver codigo
df.head()
No. Clave INEGI Entidad Federativa Municipio Estado de Fuerza Municipal DIC 2019 Estado de Fuerza Municipal DIC 2024 Porcentaje de incremento Estado de fuerza, últimos 5 años Población 2020 Estado de Fuerza Municipal MAR 2025 Tasa de Policía Municipal por cada mil hab. Salario CONASAMI 2024 Salario bruto municipal 2024 Promedio Diferencia Evaluados en Control de Confianza Aprobados en Control de Confianza Aprobados vs. E.F. Elementos con CUP Elementos con CUP vs. E.F. Confianza ENSU 2025 MAR Desempeño ENSU 2025 MAR
0 1 1001 Aguascalientes Aguascalientes 1431 1414 -1.187980 948990 1387 1.461554 17862.30 17145.66 -716.64 1386 1318 0.950252 1330 0.958904 13.30 0.577184
1 2 2002 Baja California Mexicali 1572 1722 9.541985 1049792 1711 1.629847 20090.71 21028.17 937.46 1704 1650 0.964348 1598 0.933957 15.98 0.462853
2 3 2004 Baja California Tijuana 2205 1784 -19.092971 1922523 1779 0.925347 20090.71 19316.69 -774.02 1776 1740 0.978078 1500 0.843170 15.00 0.332853
3 4 3008 Baja California Sur Los Cabos 534 577 8.052434 351111 605 1.723102 20067.12 16000.00 -4067.12 605 594 0.981818 553 0.914050 5.53 0.596330
4 5 4003 Campeche Carmen 206 232 12.621359 248845 228 0.916233 17674.36 10851.84 -6822.52 228 228 1.000000 227 0.995614 2.27 0.494143

Seleccion de Variables

Para crear el indice compuesto, seleccionamos las siguientes variables, ya que las demas no son usadas en el calculo de otros indicadores que aportan mayor valor estadistico:

  • Porcentaje de incremento Estado de fuerza, últimos 5 años
  • Tasa de Policía Municipal por cada mil hab.
  • Diferencia
  • Aprobados vs. E.F.
  • Elementos con CUP vs. E.F.
  • Confianza ENSU 2025 MAR
  • Desempeño ENSU 2025 MAR

Despues de normalizar las variables citadas, obtenemos las siguiente tabla. En ella solo vemos los campos relevantes para la creacion del indice con los valores normalizados y ordenados de mayor a menor segun el campo denominado “Indice”.

Ver codigo
from sklearn.preprocessing import MinMaxScaler

cols_norm = [
    'Porcentaje de incremento Estado de fuerza, últimos 5 años',
    'Tasa de Policía Municipal por cada mil hab.',
    'Diferencia ',
    'Aprobados vs. E.F.',
    'Elementos con CUP vs. E.F.',
    'Confianza ENSU 2025 MAR',
    'Desempeño ENSU 2025 MAR']

scaler = MinMaxScaler()

df[cols_norm] = scaler.fit_transform(df[cols_norm])
Ver codigo
df_norm = df[['Clave INEGI',
    'Entidad Federativa',
    'Municipio',
    'Porcentaje de incremento Estado de fuerza, últimos 5 años',
    'Tasa de Policía Municipal por cada mil hab.',
    'Diferencia ',
    'Aprobados vs. E.F.',
    'Elementos con CUP vs. E.F.',
    'Confianza ENSU 2025 MAR',
    'Desempeño ENSU 2025 MAR']]
Ver codigo
df_norm.loc[:, ['Indice']] = df_norm[cols_norm].sum(axis=1)
Ver codigo
resultados = df_norm.sort_values('Indice', ascending=False).reset_index(drop=True)
Ver codigo
(
    resultados
        .head()
        .style
        .hide()    
        .format({'Porcentaje de incremento Estado de fuerza, últimos 5 años': '{:,.2f}',
                'Tasa de Policía Municipal por cada mil hab.': '{:,.2f}',
                'Diferencia ': '{:,.2f}',
                'Aprobados vs. E.F.': '{:,.2f}',
                'Elementos con CUP vs. E.F.': '{:,.2f}',
                'Confianza ENSU 2025 MAR': '{:,.2f}',
                'Desempeño ENSU 2025 MAR': '{:,.2f}',
                'Indice': '{:,.2f}'})
)
Clave INEGI Entidad Federativa Municipio Porcentaje de incremento Estado de fuerza, últimos 5 años Tasa de Policía Municipal por cada mil hab. Diferencia Aprobados vs. E.F. Elementos con CUP vs. E.F. Confianza ENSU 2025 MAR Desempeño ENSU 2025 MAR Indice
14120 Jalisco Zapopan 0.50 0.89 0.32 0.95 0.94 0.95 0.86 5.41
14039 Jalisco Guadalajara 0.57 0.97 0.36 0.93 0.97 1.00 0.59 5.39
15106 México Toluca 1.00 0.98 0.14 0.99 1.00 0.67 0.60 5.38
8037 Chihuahua Juárez 0.46 0.74 0.50 0.94 0.92 0.81 0.69 5.07
21114 Puebla Puebla 0.59 0.59 0.26 0.98 0.99 0.77 0.68 4.87
Ver codigo
resultados.to_csv('resultados.csv')

Ranking de Municipios

Ver codigo
fig = px.bar(resultados.head(10),
             x='Indice',
             y='Municipio',
             orientation='h',
             hover_data=['Municipio', 'Indice',],
             height=600,
             width=940,
             text_auto=False,
             custom_data=['Municipio', 'Indice'],)

fig.update_traces(textfont_size=12,
                  textangle=0,
                  textposition='outside',
                  marker_color='#691c32',
                  marker_line_color='#000000',
                  marker_line_width=1.5,
                  opacity=0.9,
                  hovertemplate =
                "Municipio: %{y}<br>" +
                "Indice: %{x:.2f}<br>")

fig.update_layout(
    title=dict(text='Top 10 Municipios con Mayor Indice', font=dict(size=30), yref='paper'),
    template='ggplot2',
    autosize=False,
    width=900,
    height=500,
    showlegend=True,
    plot_bgcolor='#f8f8f8',
    yaxis=dict(title='', autorange='reversed'),
    xaxis=dict(title='Indice'),
    margin=dict(
        l=20,
        r=20,
        b=20,
        t=50,
        pad=4
    )
)

fig.show()

Descargas

Puedes dar click en los siguientes links para descargar la tabla final ordenada por el campo Indice, tanto en formato CSV o en formato PDF.